package ai.leinao.common.utils;

import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * 自定义Jexl 表达式函数
 */
public class JexlCommonFunction {

    /**
     * 获取当前时间毫秒数
     * @return 当前时间
     */
    public long now() {
        return System.currentTimeMillis();
    }


    /**
     * 定义一个自定义的字符串相等函数
     * @param left 左侧字符串
     * @param right 右侧字符串
     * @return 如果相等则返回true
     */
    public boolean equals(String left, String right) {
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        return left.equals(right);
    }

    /**
     * 自定义判断字符串1是否包含字符串2（不区分大小写）
     * @param left 左侧字符串
     * @param right 右侧字符串
     * @return 如果包含则返回true
     */
    public boolean contains(String left, String right) {
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        return left.toLowerCase().contains(right.toLowerCase());
    }


    /**
     * 自定义判断对象在环境中是否存在值
     * @param arg 参数
     * @return 如果存在则返回true
     */
    public boolean exists(Object arg) {
        if (arg == null) {
            return false;
        }
        return !String.valueOf(arg).isEmpty();
    }

    /**
     * 自定义判断字符串是否匹配正则表达式
     * - regex 需要添加 "" 或 ''
     * @param str 字符串
     * @param regex 正则表达式
     * @return 如果匹配则返回true
     */
    public boolean matches(String str, String regex) {
        if (str == null || regex == null) {
            return false;
        }
        return Pattern.compile(regex).matcher(str).matches();
    }

    /**
     * 自定义判断对象是否在数组中
     * @param arr 数组
     * @param value 值
     * @return
     */
    public static boolean inArray(Object[] arr, Object value) {
        return Arrays.asList(arr).contains(value);
    }
    
}
